Access to network content

ABSTRACT

A method and system for improving access to search results are provided in the disclosure herein. Aspects of this disclosure minimize the delay in accessing network content by priming certain regularly viewed content (e.g., a web search home page or a search results page) in an invisible browser instance. As the user accesses the content prerendered in the invisible browser instance, a new instance of the prerendered content is created to facilitate future accesses to the network content (e.g., future search queries).

CROSS-REFERENCES TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 13/472,019, filed on May 15, 2012, the disclosure of which ishereby incorporated herein by reference.

BACKGROUND

The advent of the World Wide Web has placed more information at thefingertips of today's users than ever before. Various websites cater tonearly every need and interest, providing access to referenceinformation, business and financial documents, social networking, andmore. Widespread broadband Internet access provides faster access tothese sites than ever before.

However, as fast as current high-speed Internet services are, the act ofbrowsing the web is not instantaneous. When a user selects a link on apage or enters a uniform resource locator (URL) in a text field, thereis a delay while data is requested from the host, sent to the client,and rendered in the browser. The user is typically idle while waitingfor their requested site to load. While high-speed Internet access maylimit this delay to a few seconds, even this short delay can add up tothousands of man-hours of lost productivity each year.

BRIEF SUMMARY

A method and system for improving access to network content are providedin the disclosure herein. Aspects of this disclosure minimize the delayin accessing network content by prerendering elements of a content page.The network content, such a web search results page or a web search homepage, may be prerendered in a hidden browser instance when the browseris executed. Aspects of the disclosure may provide a search query to thenetwork content via an application programming interface (API) such as asearch API. The prerendered network content may be made visible inresponse to a selection operation indicating that the user wishes toaccess the prerendered network content (e.g., selection of web searchhome page by entering the web search home page's address, selection of ahome page button where the home page of the browser is set to web searchhome pages, or entry of a search query), thus allowing for immediatedisplay of the network content. After the user accesses the prerenderednetwork content, a new instance of the network content may beprerendered. For example, when the user performs a search query, a newinstance of a search page may be prerendered after the originalprerendered search page is merged with the visible browser instance toprepare for a future search query.

Aspects of the disclosure describe a computer-implemented method forimproving access to network content. The method may includeprerendering, using a processor, a set of network content in a hiddenbrowser instance, monitoring user input in a browser for a selectionoperation associated with the set of network content preloaded in thehidden browser instance, detecting the selection operation associatedwith the set of network content preloaded in the hidden browserinstance, in response to a detection of the selection operation,merging, with the processor, the set of network content into an activebrowser instance, and creating a new instance of the set of networkcontent in a new hidden browser instance for use in another selectionoperation associated with the set of network content. The set of networkcontent may be a search results page and the selection operation may beat least one of entry of a search query in a text entry field orselection of a suggested search query. The set of network content may bea web search home page and the selection operation may indicate that theuser wishes to access the web search home page. Prerendering the set ofnetwork content may include requesting the set of network content from aremote server. The new instance of the set of network content may becreated by copying the set of network content received from the remoteserver without contacting the remote server a second time. The newinstance of the set of network content may be created at a particulartime interval after the selection operation. The new instance of the setof network content may be created based on a parameter received from aremote server that provided the network content. The new instance of theset of network content may be created immediately after the set ofnetwork content is merged with the active browser instance. The methodmay include notifying the set of network content preloaded in the hiddenbrowser instance of the selection operation using an applicationprogramming interface. The set of network content may be determined byat least one of a user preference, a user navigation history, or adefault search engine.

Aspects of the disclosure may provide a non-transitory computer readablestorage medium containing instructions that, when executed by aprocessor, cause the processor to perform a method. The method performedby the processor may include prerendering, using a processor, a set ofnetwork content in a hidden browser instance, monitoring user input in abrowser for a selection operation associated with the set of networkcontent preloaded in the hidden browser instance, detecting theselection operation associated with the set of network content preloadedin the hidden browser instance, in response to a detection of theselection operation, merging the set of network content into an activebrowser instance, and creating a new instance of the set of networkcontent in a new hidden browser instance for use in another selectionoperation associated with the set of network content. The set of networkcontent may be a search engine web page and the selection operation maybe at least one of entry of a search query in a text entry field orselection of a suggested search query. The set of network content may bea web search home page and the selection operation indicates that theuser wishes to access the web search home page. Prerendering the set ofnetwork content may include requesting the set of network content from aremote server. The new instance of the set of network content may becreated by copying the set of network content received from the remoteserver without contacting the remote server a second time. The newinstance of the set of network content may be created at a particulartime interval after the selection operation. The new instance of the setof network content may be created based on a parameter received from aremote server that provided the network content. The new instance of theset of network content may be created immediately after the set ofnetwork content is merged with the active browser instance. The methodmay include notifying the set of network content preloaded in the hiddenbrowser instance of the selection operation using an applicationprogramming interface. The set of network content may be determined byat least one of a user preference, a user navigation history, or adefault search engine.

Aspects of the disclosure may provide a processing system for improvingaccess to search results. The processing system may include at least oneprocessor, and a memory coupled to the at least one processor. Theprocessor may be configured to execute a browser application, prerendera set of network content in a hidden instance of the browserapplication, such that at least some portion of the network content isrendered, monitor user input in the browser for a selection operationassociated with the set of network content preloaded in the hiddenbrowser instance, detect the selection operation associated with the setof network content preloaded in the hidden browser instance, in responseto a detection of the selection operation, merge the set of networkcontent into an active browser instance, and create a new instance ofthe set of network content in a new hidden browser instance for use inanother selection operation associated with the set of network content.The set of network content may be at least one of a web search home pageor a search results page. The selection operation may be at least one ofentry of a search query in a text field or selection of a suggestedsearch query.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a system diagram depicting an example of a server incommunication with example client devices in accordance with aspects ofthe disclosure.

FIG. 2 is block diagram depicting an example of a computing device inaccordance with aspects of the disclosure.

FIG. 3 is a flow diagram depicting an example method for prerenderingnetwork content in accordance with aspects of the disclosure.

FIG. 4 is a flow diagram depicting an example method for priming ahidden browser instance with network content in accordance with aspectsof the disclosure.

FIG. 5 is a screen capture of an example of a browser window showing theuse of a text entry field for entering a search query or an address inaccordance with aspects of the disclosure.

FIG. 6 is a screen capture of an example of a search page in accordancewith aspects of the disclosure.

FIG. 7 is a flow diagram depicting an example of a method forprerendering a search page to improve access to search results inaccordance with aspects of the invention.

DETAILED DESCRIPTION

A method and system for improving access to search results are providedin the disclosure herein. Aspects of this disclosure minimize the delayin accessing network content by “priming” certain regularly viewedcontent (e.g., a web search home page or a search results page) in aninvisible browser instance. As the user accesses the content prerenderedin the invisible browser instance, a new instance of the prerenderedcontent is created to facilitate future accesses to the network content(e.g., future search queries). Aspects of the disclosure may provide asearch query to a preloaded search page via a search applicationprogramming interface. The preloaded search web page may be made visiblein response to the search query such that the user does not need to waitfor rendering of the web page (e.g., fetching and rendering of pageformatting, logos, scripts, and the like), thus allowing for immediatedisplay of search results as soon as the results are received. Variousmethods for performing the prerendering operation, configuring theprerendering operation, and managing the prerendering operation aredescribed. For the purposes of this application, the term “prerendering”generally refers to the act of requesting all resources (e.g., anyexecutable code, scripting language, files, and/or interactive objects)necessary to load the content of a web address, and loading the contentin a web browser instance.

As shown in FIG. 1, an example system 102 in accordance with one aspectincludes a server 104 in communication with one or more client devices106, 108, 110 displaying web browser interfaces 114, 116, 118. The userof the client device 106 may browse to a web page located at “www.a.com”as displayed on the web browser interface 114. That page includescontent selectable by the user.

The client devices may be any device capable of managing data requestsvia a network 112. Examples of such client devices include a personalcomputer (PC) 108, a mobile device 110, or a server 106. The clientdevices 106, 108, 110 are operable to perform prerendering operationsduring the execution of a web browser application. In some aspects, theclient devices 106, 108, 110 predict a search event by identifyingcursor placement, text entry, or interface focus. The prerenderoperation may also be determined dynamically by, for example, aJAVASCRIPT code. While the concepts described herein are generallydescribed with respect to a web browser interface 114, 116, 118executing on a client device 106, 108, 110, aspects of the disclosurecan also be applied to any computing node capable of managing navigationevents over a network, including a server 104.

The client devices 106, 108, 110 may also comprise personal computers,personal digital assistants (“PDA”): tablet PCs, netbooks, laptops,mobile phones, etc. Indeed, client devices in accordance with thesystems and methods described herein may comprise any device operativeto process instructions and transmit data to and from humans and othercomputers including general purpose computers, network computers lackinglocal storage capability, etc.

The client devices 106, 108, 110 may be operable to predict searchoperations to assist in data access on the network 112. For example, theclient devices may predict a search operation to facilitate prerenderingof a search page in order to decrease delay in the display of networkcontent, thus improving the user's browsing experience. In some aspects,the server 104 provides navigation data which may be used by the clientdevices 106, 108, 110 to predict a search operation. In some aspects,the client devices 106, 108, 110 predict a search operation using localdata.

The network 112, and the intervening nodes between the server 104 andthe client devices 106, 108, 110, may comprise various configurationsand use various protocols including the Internet, World Wide Web,intranets, virtual private networks, local Ethernet networks, privatenetworks using communication protocols proprietary to one or morecompanies, cellular and wireless networks (e.g., Wi-Fi), instantmessaging, hypertext transfer protocol (“HTTP”) and simple mail transferprotocol (“SMTP”), and various combinations of the foregoing. It shouldbe appreciated that a typical system may include a large number ofconnected computers.

Although certain advantages are obtained when information is transmittedor received as noted above, other aspects of the system and method arenot limited to any particular manner of transmission of information. Forexample, in some aspects, information may be sent via a medium such asan optical disk or portable drive. In other aspects, the information maybe transmitted in a non-electronic format and manually entered into thesystem.

Although some functions are indicated as taking place on the server 104and other functions are indicated as taking place on the client devices106, 108, 110, various aspects of the system and method may beimplemented by a single computer having a single processor. It should beappreciated that aspects of the system and method described with respectto the client may be implemented on the server, and vice-versa.

FIG. 2 is a block diagram depicting an example of a computing device200, such as one of the client devices 106, 108, 110 described withrespect to FIG. 1. The computing device 200 may include a processor 204,a memory 202 and other components typically present in general purposecomputers. The memory 202 may store instructions 206 and data 208 thatare accessible by the processor 204. The processor 204 may execute theinstructions 206 and access the data 208 to control the operations ofthe computing device 200.

The memory 202 may be any type of tangible memory operative to storeinformation accessible by the processor 204, including acomputer-readable medium, or other medium that stores data that may beread with the aid of an electronic device, such as a hard-drive, memorycard, read-only memory (“ROM”), random access memory (“RAM”), digitalversatile disc (“DVD”) or other optical disks, as well as otherwrite-capable and read-only memories. The system and method may includedifferent combinations of the foregoing, whereby different portions ofthe instructions and data are stored on different types of media.

The instructions 206 may be any set of instructions to be executeddirectly (such as machine code) or indirectly (such as scripts) by theprocessor 204. For example, the instructions may be stored as computercode on a computer-readable medium. In that regard, the terms“instructions” and “programs” may be used interchangeably herein. Theinstructions 206 may be stored in object code format for directprocessing by the processor 204, or in any other computer languageincluding scripts or collections of independent source code modules thatare interpreted on demand or compiled in advance. Functions, methods androutines of the instructions 206 are explained in more detail below (seeFIGS. 3-7).

The data 208 may be retrieved, stored or modified by the processor 204in accordance with the instructions 206. For instance, although thearchitecture is not limited by any particular data structure, the data208 may be stored in computer registers, in a relational database as atable having a plurality of different fields and records, ExtensibleMarkup Language (“XML”) documents or flat files. The data may also beformatted in any computer readable format such as, but not limited to,binary values or Unicode. By further way of example only, image data maybe stored as bitmaps comprised of grids of pixels that are stored inaccordance with formats that are compressed or uncompressed, lossless(e.g., BMP) or lossy (e.g., JPEG), and bitmap or vector-based (e.g.,SVG), as well as computer instructions for drawing graphics. The data208 may comprise any information sufficient to identify the relevantinformation, such as numbers, descriptive text, proprietary codes,references to data stored in other areas of the same memory or differentmemories (including other network locations) or information that is usedby a function to calculate the relevant data.

The processor 204 may be any suitable processor, such as variouscommercially available general purpose processors. Alternatively, theprocessor 204 may be a dedicated controller such as anapplication-specific integrated circuit (“ASIC”).

Although FIG. 2 functionally illustrates the processor and memory asbeing within a single block, it should be understood that the processor204 and memory 202 may actually comprise multiple processors andmemories that may or may not be stored within the same physical housing.Accordingly, references to a processor, computer or memory will beunderstood to include references to a collection of processors,computers or memories that may or may not operate in parallel.

The computing device 200 may be at one node of a network and beoperative to directly and indirectly communicates with other nodes ofthe network. For example, the computing device 200 may comprise a webserver that is operative to communicate with client devices via thenetwork such that the computing device 200 uses the network to transmitand display information to a user on a display of the client device.

The system can provide privacy protections for the client dataincluding, for example, anonymization of personally identifiableinformation, aggregation of data, filtering of sensitive information,encryption, hashing or filtering of sensitive information to removepersonal attributes, time limitations on storage of information, and/orlimitations on data use or sharing. Data can be anonymized andaggregated such that individual client data is not revealed. A user mayalso be provided with an opportunity to opt in/out to enable thecollection of sharing of data.

In order to facilitate the prerendering and search operations of thecomputing device 200, the memory 202 may further comprise a browser2102. Although the browser 210 is identified as a discrete module inconnection with FIG. 2, the functionality of this module may overlapand/or exist in a fewer or greater number of modules than what is shown,with such modules residing at one or more processing devices, which maybe geographically dispersed.

The browser 210 provides for the display of network content, such as aweb page, to a user of the client device via a visible browser instance212 by sending and receiving data across a computer network. The networkcontent may be received in response to a network request, such as aHypertext Transfer Protocol (HTTP) GET request. The network content maybe provided in a markup language, such as Hypertext Markup Language(HTML). The network content may also include various scripts, data,forms, and the like viewable and/or executed in the visible browserinstance 212, including interactive and/or executable content such asADOBE FLASH content, JAVASCRIPT content, and the like.

The browser 210 may further comprise a hidden browser instance 214. Thehidden browser instance 214 provides a browser instance within whichnetwork content identified by a prerender controller 218 may be loaded.The network content identified by the prerender controller 218 may takethe form of content that the user is likely to access during a browsersession, such as a web page for initiating a search query or displayingsearch results, a user webmail page, or any other content that a user islikely to return to one or more times during the browsing session. Thehidden browser instance 214 may include a start page for a search enginewherein non-search-result data (e.g., page formatting, logos, images,style sheets, scripts, and the like) has been requested and rendered bythe prerender module 210. The preloaded search page may be stored suchthat the preloaded search page is not visible to a user until the userprovides a search query. The hidden rendering environment refers to anyrepresentation that does not have an immediately apparent interface forthe user. For example, the preloaded search page may be stored within abrowser “tab” that does not have an associated selection control in aweb browser tab interface. The hidden browser instance 214 may beaccessible via a menu or interface command, and in response to theselection of this interface command an interface for the prerenderedcontent is generated, such as by adding a selection control for theprerendered content to the browser tab interface. The hidden renderingenvironment may also be provided by a variety of other methods suitableto receive and render the page environment while avoiding distraction ofthe user with potentially irrelevant content. The network content loadedin the hidden browser instance 214 may be stored in a completelyexecuted and rendered format. For example, any executable code,scripting language, multimedia files, and/or interactive objects may befully requested and loaded in the prerendering environment provided bythe hidden browser instance. Where the hidden browser instance 214stores a preloaded search page, if the user enters a search query, thebrowser 210 may execute the search query using the preloaded searchpage, and merge the preloaded search page with the visible browserinstance 212. Search results responsive to the search query may thus beprovided without the need to request the search engine page or wait forthe search engine page to render. Throughout this process the preloadedsearch page may issue the query over the network to the search engine,receive data providing results for the search query, blend the resultsinto the preloaded search page, and make itself visible.

The prerender controller 218 may control preloading and prerenderingoperations performed within the web browser. For example, after apreloaded search page is merged with the visible browser instance 212,the prerender controller 218 may reprime the hidden browser instance 214with a new instance of the preloaded search page to prepare for a newsearch query. The prerender controller 218 may perform these operationsat particular intervals, such as on a timer (e.g., every 30 seconds),instantly upon merging the hidden browser instance with the visiblebrowser instance, in response to network traffic, or in response to anindication from the server hosting the network content.

The prerender controller 218 may also be configured by prerenderconfiguration settings 220. These prerender configuration settings 220may control when and how the prerender controller performs prerenderoperations. For example, the prerender configuration settings 220 mayspecify a particular set of network content (e.g., a URL) to bepreloaded in the hidden browser instance 214, such as a web search homepage, a user webmail access page, or a search results page. Theprerender configuration settings 220 may also specify a frequency withwhich to prerender (e.g., a time interval to reprime the hidden browserinstance after merging with the visible browser instance), a systemresource level to perform preloading, or any other setting to assist theuser with adjusting the prerendering operations to meet a particular setof needs or preferences.

The web browser 210 may further comprise a search applicationprogramming interface (API) 216. Although the specific example describedherein relates to the use of a search API for interfacing with apreloaded search page loaded in the hidden browser instance 214, thesame concepts may apply to the use of other page APIs, such as a userhomepage or webmail page configured to accept commands or instructionsvia other APIs. The search API 216 allows for a scripted interface withthe content loaded in the hidden browser instance 214. When the browser210210 detects a search query (e.g., entered into a text field providedby the browser), the browser 210 may pass the search query to thepreloaded search page using the search API 216. For example, the searchquery may be passed to the preloaded search page using an asynchronousJavaScript and extensible markup language (AJAX) protocol. The networkcontent stored within the hidden browser instance 214 may bespecifically configured to communicate in this manner, allowing theclient computing device 200 to interface with the network contentwithout the need to navigate to a new URL to perform the action (e.g.,to provide a search query to a preloaded search page). The search API216 may be configurable within the browser 210. For example, a user mayspecify a particular search engine for use in search operationsperformed by the browser.

FIG. 3 is a flow diagram depicting an example method 300 forprerendering a web page, such as network content executed stored withinthe hidden browser instance 214, in accordance with aspects of thedisclosure. Aspects of the method 300 operate to minimize load times fornetwork content by requesting the network content prior to the usernavigating to said network content. The method 300 may be performed by acomputing device, such as the computing device 200, to eliminate delaysin the user search experience by prerendering a search page in a hiddenbrowser instance prior to the user entering a search query. For example,the method 300 may be performed by elements of the browser 210. Whileaspects of the method 300 are described with respect to the computingdevice 200, the method 300 may also be performed by the server 104, orany device with hardware and/or software designed to acceptinstructions.

At stage 302, the computing device 200 determines a next navigationevent, such as a search operation, within a web browser. The nextnavigation event may be received from a navigation prediction element,or the next navigation event may be embedded within the web pagedisplaying within the web browser. For example, a search engine mayembed a tag within a set of search results to indicate that a particularlink associated with the most relevant result should be prerendered bythe web browser. A method for embedding prerendering tags within a webpage is described below (see FIG. 4).

At stage 304, the computing device 200 requests the content associatedwith the navigation event or search page identified at stage 302. Therequest may comprise a hypertext transfer protocol (HTTP) GET request, afile transfer protocol (FTP) request, or any other network data accessrequest as known in the art. A first set of web content may be providedin response to a HTTP GET request, which may then lead to additionalHTTP GET requests in accordance with the first set of web content. Forexample, a HTTP GET request may result in a base search page being sentto the web browser, which may trigger other page loading operations,such as additional GET requests. The base search page may have multipleembedded images, which are then fetched and rendered using HTTP GETrequests for each image. The prerendering process as described mayrequest the full search page, including associated scripts, and thenexecute those scripts.

At stage 306, the computing device 200 renders content associated withthe navigation event determined at stage 302. The content may berendered in an alternate instance of the web browser that is hidden fromthe user. For example, the content may be rendered by an alternateprocess or in a hidden web browser tab.

In some aspects, the rendered content may include a redirectionoperation. An example of a redirection operation is when the act ofloading a first page, for instance, www.a.com, causes the browser toload a second page, such as www.b.com. Redirection may occur in responseto a HTML tag, a JAVASCRIPT navigation command, or the like. In the casea prerendered page requests a redirection operation, said redirectionoperation would also occur in the alternate instance.

In some aspects, a first redirection operation may lead to subsequentredirections. For example, www.a.com may lead to www.b.com, which leadsto www.c.com. Aspects of the system and method may account for thisfact, such as by storing a history of redirection operations andprerendering the last page in a series in response to a first page beingidentified to prerender. In some aspects, the method 300 mayshort-circuit redirection operations by not prerendering intermediatepages when the destination result page (i.e. the page at the end of theredirection operations) is known, and only prerendering the final pagein the series.

At stage 308, the computing device 200 may determine whether the userhas selected the link identified at stage 302 or performed a searchoperation within a particular time period. For example, the method 300may wait for 10 seconds, 20 seconds, 30 seconds, one minute, 5 minutes,or any other time frame. In some aspects, the time frame may beconfigurable within an options menu associated with the web browser. Thetime frame may also be specified by the server 104. For example, theserver 104 may embed a timeout value within a prerender tag, indicatingthe length of time the content associated with the tag should be heldbefore being discarded. If the user has selected the link within thetime period, the method 300 proceeds to stage 312. Otherwise, the method300 proceeds to stage 310.

At stage 310, the computing device 200 discards the prerendered content.The prerendered content is allowed to expire in this manner in order tofree up system resources associated with the prerender operation andprevent the user from being presented with stale data. In some aspects,a different expiration period may be specified for different types ofdata. For example, data that is likely to rapidly change, such asbreaking news articles, stock quotes, syndication feeds, and the like,is more likely to grow stale quickly, and might be associated with ashorter expiration timer, such as 10 seconds, 20 seconds, or one minute.Data that is less likely to change, such as reference articles,archives, box scores, and the like, might be associated with a longerexpiration timer, such as an hour, 6 hours, 24 hours, a week, or thelike. In some aspects, the wait time is based on a page type. Forexample, if the user is viewing a lengthy news article, a longer waittime may be specified when prerendering a next page of the article toprovide the user time to read the current page of the article beforeselecting the next page. In some aspects, the wait time is determined bya time-to-live (TTL) parameter embedded within the page. In someaspects, the wait time is hard coded within the browser. The method 300then ends after the prerendered content is discarded, though in someaspects the method 300 may repeat indefinitely as the user browses webcontent.

At stage 312, the computing device 200 merges the alternate instancecontaining the prerendered content into the visible user instance, inresponse to the user performing a search operation. In this manner, thecomputing device 200 displays the content associated with the navigationevent instantly, without a delay while the page data is requested fromand received from the host server. Search results may be merged into thesearch page as the results are received from a server. In some aspects,the user may select the navigation event prior to the prerenderingoperation completing. In such cases, the partially loaded page would bemerged into the current user instance. The partially loaded page wouldthen continue to load in the current user instance as normal. The method300 then ends after making the prerendered content available to theuser.

FIG. 4 is a flow diagram depicting an example method 400 for priming ahidden browser instance with network content in accordance with aspectsof the disclosure. By preloading regularly accessed content in a hiddenbrowser instance, the method ensures that users experience a minimum ofwait time when performing commonly operations such as Internet searchesor visits to a web search home page. Such commonly viewed content may be“primed” when the browser is first executed to prepare for such access.The content that is primed and the manner in which it is accessed may bedetermined by various methods, including particular configurationsettings or preferences.

At stage 402, the hidden browser instance is primed with the networkcontent. As described above, the network content may be associated withcommonly performed user activities, such as initiation of a searchrequest, a return to the web search home page, or accessing the user'sprimary webmail account. The content that is primed in this manner maybe determined in a variety of methods including allowing the user tospecify an address or uniform resource locator (URL) in configurationsettings, analysis of user navigation history to predict a mostfrequently visited page, or specification of a default search engine forpriming. This initial priming stage may occur when the browser isinitially executed.

At stage 404, an indication that the user wishes to access the networkcontent preloaded in the hidden browser instance is received. Forexample, if the network content is a web search home page, the user mayselect a “home” interface control. If the network content is a searchresults page, the user may enter a search query in a text entry field orselect a suggested search query, such as provided via an “Omnibox” (seeFIG. 5). As another example, the user may also indicate a desire toaccess the network content by typing a URL associated with the contentin a browser address bar.

In response to the selection operation received at stage 404, the hiddenbrowser instance containing the network content is merged into theactive browser instance at stage 406. The network content thus becomesaccessible to the user as soon as the merge occurs, without the need torequest the content from a host server.

At stage 408, the network content is reprimed (e.g., rendered again) ina hidden browser instance again. A new hidden browser instance may beestablished, or the same hidden instance that previously held thenetwork content may be used for the new content. The network content maybe requested again over the network, or it may be rendered again usingpreviously requested data. In this manner, the network content isprepared for a new user interaction, such as a new search query or a newreturn to the web search home page. The network content may be reprimedafter a particular length of time after the initial set of networkcontent is used, for example, a search page may be reprimed 30 secondsafter each search query.

The network content may be reprimed based on other factors as well, suchas immediately after use of the initial network content, based upon anaccess model derived from previous user navigation habits, based on alevel of available system resources, or based on an indication from theserver hosting for the network content. For example, the server mayspecify a particular “Time to Wait” or “Time to Live” before the networkcontent is reprimed in order to manage the amount of network trafficflowing to the server from preload operations. The method 400 may endafter the network content has been reprimed for use in another networkaccess operation. The repriming operation may be performed in variousmanners, including copying the preloaded network content before mergingthe content into the active browser, or requesting a new copy of thenetwork content from a host server.

FIG. 5 is a screen capture of an example of a browser window 500 showingthe use of a text entry field 402 for entering a search query or anaddress in accordance with aspects of the disclosure. The text entryfield 502 shown may function as an “Omnibox”, allowing the user to typein a search query or a website URL. If the user enters a website URL,the browser may navigate to the URL. If the user does not enter a URL,the browser may present a list of search results associated with theentered text.

FIG. 6 is a screen capture of an example of a search page 600 inaccordance with aspects of the disclosure. The search page 600 is madeup of interface controls, images, and formatting data, such as the pageheader 602, and a set of search results 604. In pages configured toaccept search queries via a search API, the search results 604 may bereceived separately from the rest of the page. This allows formattingdata, scripts, logos, headers, style sheets, and the like, such as thepage header 602, to be loaded independently from the search results 604.As such, page elements other than the search results may be renderedprior to the entry of a search query, allowing for immediate display ofsearch results as they are received in response to a search query.Aspects of the disclosure may prerender these page elements in a hiddenbrowser instance to facilitate instant display of search results.

FIG. 7 is a flow diagram depicting an example of a method 700 forpreloading a search page to improve access to search results inaccordance with aspects of the invention. The method 700 provides forprerendering of a search engine page in a hidden browser instance. Whena search query is provided, the query is passed to the prerenderedsearch engine via a search API, and the prerendered search engine ismerged into an active browser session. In this manner, search resultsare provided to the user as soon as the results are received from thesearch engine, with no delay while the search engine page loads. Asdescribed above, preloaded search pages may be primed to reduce accesstimes to search results, with a new search page preloaded after theprevious search page is used to perform a search query (see FIG. 4).

At stage 702, the search engine page is prerendered in a hidden browserinstance. The search engine page may be prerendered in response to userinput, or it may be prerendered when the browser is loaded. For example,the search engine page may be prerendered when a text entry field thataccepts search queries receives focus, when the user enters at least onetext character in the text entry field, or after at least one “spacebar”character is entered in the text entry field (to distinguish the textentry from a URL). The prerendering process of the search engine mayinclude requesting any or all of page formatting instructions, images,logos, scripts, style sheets, or any other content that must be receivedin order to render the web page, aside from the search resultsresponsive to the query.

At stage 704, a search query is received. The search query may bereceived in response to the user entering text in the text field, or thequery may be identified after the user performs a selection operation,such as pressing the “enter” key after entering text in the text field.The search query may also be identified via other methods, such as bydetecting a “spacebar” character in a text entry field. In some aspects,the search query is only sent to the search engine after the “enter” keyhas been pressed and the text string is determined to not be a URL, inorder to preserve user privacy (e.g., to avoid sending URLs typed by theuser for navigation purposes to the server as search engine queries).

At stage 706, the search query is passed to the prerendered searchengine page. The search query may be communicated to the prerenderedsearch page using a search API, where the query is sent via a scriptinginterface. For example, the query may be sent to the search engine viaan AJAX interface on the search engine page.

At stage 708, the prerendered search page is merged into the activebrowser instance to display the search results. Search results may thusbe instantly presented to the user as they are received from the searchengine server, as the other content of the search engine page hasalready been rendered.

The stages of the illustrated methods are not intended to be limiting.The functionality of the methods can exist in a fewer or greater numberof stages than what is shown and, even with the depicted methods, theparticular order of events may be different from what is shown in thefigures.

The systems and methods described herein advantageously provide forfaster display of search results. Since the non-search-result content ofthe search engine page is prerendered, delay associated with requesting,downloading, and rendering such content is eliminated. This allowsdisplay of search results as soon as the results are received from thesearch engine server. Display of search results in such a manner maysave multiple seconds of delay during which the user would otherwise beidle while waiting for the page data to render.

As these and other variations and combinations of the features discussedabove can be utilized without departing from the disclosure as definedby the claims, the foregoing description of the embodiments should betaken by way of illustration rather than by way of limitation of thedisclosure as defined by the claims. It will also be understood that theprovision of examples of the disclosure (as well as clauses phrased as“such as,” “e.g.”, “including” and the like) should not be interpretedas limiting the disclosure to the specific examples; rather, theexamples are intended to illustrate only some of many possibleembodiments.

The invention claimed is:
 1. A method for accessing network content,comprising: receiving a request to navigate to a network address;receiving content from the network address and a tag associated with thecontent from the network address, the tag indicating another networkaddress to prerender, the tag having a timeout value embedded thereinindicating a length of time that the content should be held before beingdiscarded, wherein the length of time is based on data type;controlling, by one or more processors, display of the contentassociated with the network address in an active browser instance; inresponse to receiving the tag, the one or more processors prefetchingresources necessary for prerendering content from the another networkaddress; prerendering, by the one or more processors, content associatedwith the another network address based on the resources; storing theprerendered content of the another network address in a hidden browserinstance; and discarding the prerendered content after the length oftime indicated by the tag expires in order to free up system resources.2. The method of claim 1, wherein the content from the network addressis search result content and the content from the another networkaddress is content indicated by the search result content.
 3. The methodof claim 1, wherein the resources include at least one of executablecode, scripting language, multimedia files, or interactive objects. 4.The method of claim 1, wherein the content of the another networkaddress includes a request to redirect to content from a redirectionnetwork address and the method further comprises: prerendering thecontent from the redirection network address to generate prerenderedcontent of the redirection network address; and storing the prerenderedcontent of the redirection network address in the hidden browserinstance in place of the prerendered content of the another networkaddress.
 5. The method of claim 1, further comprising interfacing withthe hidden browser instance through an application programming interface(API).
 6. An apparatus for accessing network content, comprising: atleast one processor; and at least one memory coupled to the at least oneprocessor; wherein the at least one processor is configured to controlexecution of a browser application in accordance with instructionsstored in the at least one memory, and the browser application isoperable to receive a request to navigate to a network address; receivecontent from the network address and a tag associated with the contentfrom the network address, the tag indicating another network address toprerender, the tag having a timeout value embedded therein indicating alength of time that the content should be held before being discarded,wherein the length of time is based on data type; control display of thecontent associated with the network address in an active browserinstance; in response to receiving the tag, prefetch resources necessaryfor prerendering content from the another network address; prerendercontent associated with the another network address based on theresources to generate prerendered content of the another networkaddress; store the prerendered content of the another network address ina hidden browser instance; and discard the prerendered content after thelength of time indicated by the tag expires in order to free up systemresources.
 7. The apparatus of claim 6, further comprising a display fordisplaying the content associated with the network address and thecontent associated with the another network address.
 8. The apparatus ofclaim 6, wherein the content from the network address is search resultcontent and the content from the another network address is contentindicated by the search result content.
 9. The apparatus of claim 6,wherein the resources include at least one of executable code, scriptinglanguage, multimedia files, or interactive objects.
 10. The apparatus ofclaim 6, wherein the content of the another network address includes arequest to redirect to content from a redirection network address, andthe browser application prerenders the content from the redirectionnetwork address to generate prerendered content of the redirectionnetwork address and stores the prerendered content of the redirectionnetwork address in the hidden browser instance in place of theprerendered content of the another network address.
 11. The apparatus ofclaim 6, wherein the browser application is further operable tointerface with the hidden browser instance through an applicationprogramming interface (API).
 12. A non-transitory computer-readablemedium having instructions stored thereon, the instructions, whenexecuted by one or more processors, cause the one or more processors toimplement a method for accessing network content, the method comprising:receiving a request to navigate to a network address; receiving contentfrom the network address and a tag associated with the content from thenetwork address, the tag indicating another network address toprerender, the tag having a timeout value embedded therein indicating alength of time that the content should be held before being discarded,wherein the length of time is based on data type; controlling, by theone or more processors, display of the content associated with thenetwork address in an active browser instance; in response to receivingthe tag, the one or more processors prefetching resources necessary forprerendering content from the another network address; prerendering, bythe one or more processors, content associated with the another networkaddress based on the resources to generate prerendered content of theanother network address; storing the prerendered content of the anothernetwork address in a hidden browser instance; and discarding theprerendered content after the length of time indicated by the tagexpires in order to free up system resources.
 13. The medium of claim12, wherein the content from the network address is search resultcontent and the content from the another network address is contentindicated by the search result content.
 14. The medium of claim 12wherein the resources include at least one of executable code, scriptinglanguage, multimedia files, or interactive objects.
 15. The medium ofclaim 12, wherein the content of the another network address includes arequest to redirect to content from a redirection network address andthe method further comprises: prerendering the content from theredirection network address to generate prerendered content of theredirection network address: and storing the prerendered content of theredirection network address in the hidden browser instance in place ofthe prerendered content of the another network address.